home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / src / tla_source.lha / Intro.s < prev    next >
Text File  |  1998-01-16  |  7KB  |  324 lines

  1. ; +--------------------------+
  2. ; | 'intro.s' Display Piccy. |
  3. ; +--------------------------+----------------------------------------+
  4.  
  5.  
  6. INT_SCREENSIZE    = 80*304*4        ; Largest screen = 640x304x16 Cols
  7.                     ;  ( TLA = 320x256x64 Col )
  8.  
  9.     CNOP    0,4
  10.  
  11. INT_INT    ;-- Get Screen Memory --
  12.     Move.l    #INT_SCREENSIZE,d0
  13.     Move.l    #MEMF_CHIP|MEMF_CLEAR,d1
  14.     Call    _LVOAllocMem,exec
  15.     Move.l    d0,INT_scrbase
  16.     Bne.s    .memok
  17.  
  18.     Move.w    #-2,EXIT        ; Not enough memory
  19.     Rts                ; Bail out NOW!!
  20.  
  21. .memok    Add.l    #80*4,d0
  22.     Move.l    d0,INT_scrbase2
  23.  
  24.     ;-- Init CopperList --
  25.  
  26.     Lea    $DFF000,a5
  27.     Move.w    #$0180,DMACON(a5)    ; Kill DMA: BPLEN | COPEN
  28.  
  29.     _LoadPalette24    INT_black, INT_Cp1, 1
  30.     _LoadPalette24    INT_black, INT_Cp2, 1
  31.     _LoadPlanes    INT_scrbase,  INT_CL1, 4, 80
  32.     _LoadPlanes    INT_scrbase2, INT_CL2, 4, 80
  33.  
  34.     ;-- Setup Long/Short frame swap --
  35.     Lea    INT_C1,a0    ; Pointer.1
  36.     Move.l    #INT_CL2,d0    ; Addr. of Short Frame
  37.     Move.w    d0,6(a0)
  38.     Swap    d0
  39.     Move.w    d0,2(a0)
  40.  
  41.     Lea    INT_C2,a0    ; Pointer.2
  42.     Move.l    #INT_CL1,d0    ; Addr. of Long Frame
  43.     Move.w    d0,6(a0)
  44.     Swap    d0
  45.     Move.w    d0,2(a0)
  46.  
  47.     _ClearView
  48.     _WaitTOP
  49.     _WaitTOP            ; Don't screw with hardware mid-frame! (sync.)
  50.     Bset.b    #7,VPOSW(a5)        ; Set to 2nd frame so 1st CL clears it
  51.  
  52.     _LoadCList    INT_CL1        ; Show CopperList
  53.     Move.w    #$8380,$DFF000+DMACON    ; DMAEN | BPLEN | COPEN
  54.  
  55.  
  56.  
  57.     ; +-------+
  58.     ; | START |
  59.     ; +-------+-------------------+
  60.  
  61.  
  62.  
  63.  
  64.     ;-- PART 1: 640x86x16 Col  --
  65.     Move.l    INT_scrbase,a1
  66.     Lea    80*4*109(a1),a1        ; Start at line 109
  67.     Move.l    a1,INT_plstrt        ; Where to start decrunching to
  68.  
  69.     Lea    INT_packptr,a0        ; Offsets of packed datas
  70.  
  71.     Moveq    #1,d7
  72. .ol1    Move.l    (a0)+,INT_dds        ; EXP Presents | Demo 4 Coven '97
  73.     Jsr    WFS
  74.     Jsr    LNW
  75.     Tst.w    EXIT
  76.     Bne.s    INT_bailout
  77.     Dbra    d7,.ol1
  78.  
  79.  
  80.  
  81.  
  82.     ;-- PART 2: 640x116x16 Col --
  83.     Move.l    INT_scrbase,a1
  84.     Lea    80*4*94(a1),a1        ; Start at line 94
  85.     Move.l    a1,INT_plstrt        ; Where to start decrunching to
  86.  
  87.     Jsr    WFS
  88.     Move.l    #INT_credpal, INT_pal
  89.  
  90.     Move.l    (a0)+,INT_dds        ; Me
  91.     Jsr    LNW
  92.     Tst.w    EXIT
  93.     Bne.s    INT_bailout
  94.  
  95.     Moveq    #2,d7
  96. .ol2    Move.l    (a0)+,INT_dds        ; Steve | Adam | Dave
  97.     Jsr    WFS
  98.     Jsr    LNW
  99.     Tst.w    EXIT
  100.     Bne.s    INT_bailout
  101.     Dbra    d7,.ol2
  102.  
  103.  
  104.  
  105.  
  106.     ;-- PART 3: 320x256x64 Col --
  107.     Jsr    WFS
  108.     _LoadPlanes    INT_scrbase, INT_TLA_CL, 6, 40*256
  109.     _LoadPalette24    PAL_white, INT_TLA_Cp, 2
  110.     _LoadCList    INT_TLA_CL
  111.  
  112.     Lea    INT_tlatrace,a1
  113.     Move.l    INT_scrbase,a2
  114.     Jsr    __STC_Decrunch
  115.  
  116.     ;-- FADE PALETTE IN --
  117.     Move.w    #255,d7            ; Start Value
  118. .1    Lea    INT_tlapal,a0
  119.     Lea    PAL_white,a1
  120.     Lea    INT_tmppal,a2
  121.     Moveq    #63,d0            ; # colours - 1
  122.     Move.w    d7,d1            ; Fade Level
  123.     Jsr    __FadePalette24
  124.     _WaitVBL
  125.     _LoadPalette24    INT_tmppal, INT_TLA_Cp, 2
  126.  
  127.     Tst.w    EXIT
  128.     Bne.s    INT_bailout        ; We're outta here!
  129.  
  130.     Subq.w    #2,d7            ; Fade Speed
  131.     Bgt.s    .1
  132.  
  133.  
  134.  
  135.  
  136.     _WaitVBL    50*5
  137.  
  138.  
  139.  
  140.     ;+------------------+
  141.     ;| Finish (fadeout) |
  142.     ;+------------------+---------+
  143.  
  144.     Move.w    #255,d7
  145. .fl    Lea    PAL_black,a0
  146.     Lea    INT_tlapal,a1
  147.     Lea    INT_tmppal,a2
  148.     Moveq    #63,d0            ; # colours - 1
  149.     Move.w    d7,d1            ; Fade Level
  150.     Jsr    __FadePalette24
  151.     _WaitVBL
  152.     _LoadPalette24    INT_tmppal, INT_TLA_Cp, 2
  153.  
  154.  
  155.     Tst.w    EXIT
  156.     Bne.s    INT_bailout        ; We're outta here!
  157.  
  158.     Subq    #4,d7
  159.     Bgt.s    .fl
  160.  
  161.  
  162.  
  163.     _WaitVBL 20
  164.  
  165.  
  166.     ; +-| END |-----------------------------------+
  167.  
  168.     Move.l    #INT_SCREENSIZE,d0
  169.     Move.l    INT_scrbase,a1
  170.     Call    _LVOFreeMem,exec
  171.  
  172.     Move.w    #$0000,$DFF000+BPLCON4    ; Clear Colour Palette XOR
  173.  
  174.     Move.w    #$0180,DMACON(a5)
  175.     _WaitVBL
  176.  
  177. INT_bailout    Rts            ; Finished
  178.  
  179.  
  180.  
  181.  
  182.  
  183. ; --+-------------+-----------------------------------------------------------+
  184. ; --| SUBROUTINES |--
  185. ; --+-------------+--
  186.  
  187.  
  188. WFS    ;WaitForSync.
  189.     Move.l    d0,-(sp)
  190.     PT_ClearTrig
  191. .w1    PT_TrigVal
  192.     Tst.w    d0        ; An event
  193.     Bne.s    .w2        ;  YES!    - spring out
  194.  
  195.     Tst.w    EXIT
  196.     Beq.s    .w1
  197.  
  198. .w2    Move.l    (sp)+,d0
  199.     Rts
  200.  
  201.  
  202. LNW    ; Load bitplanes & wait 
  203.     Movem.l    d0-7/a0-6,-(sp)
  204.  
  205.     ;-- MAKE SCREEN WHITE --
  206.     _LoadPalette24    PAL_white, INT_Cp1, 1
  207.     _LoadPalette24    PAL_white, INT_Cp2, 1
  208.     _WaitVBL 2            ; TIMING!!
  209.  
  210.     ;-- DECRUNCH GRAPHICS DATA --
  211.     Lea    INT_DataPack,a1        ; Crunched Image Data (Base)
  212.     Add.l    INT_dds,a1        ; Offset
  213.     Move.l    INT_plstrt,a2        ; Decrunch Destination
  214.     Jsr    __STC_Decrunch
  215.  
  216.     ;-- FADE PALETTE --
  217.     Move.w    #255,d7            ; Start Value
  218. .1    Lea    PAL_white,a1
  219.     Move.l    INT_pal,a0
  220.     Lea    INT_tmppal,a2
  221.     Moveq    #31,d0            ; # colours - 1
  222.     Move.w    d7,d1            ; Fade Level
  223.     Jsr    __FadePalette24
  224.     _WaitVBL
  225.     _LoadPalette24    INT_tmppal, INT_Cp1, 1
  226.     _LoadPalette24    INT_tmppal, INT_Cp2, 1
  227.  
  228.     Tst.w    EXIT
  229.     Bne.s    .3            ; We're outta here!
  230.  
  231. .2    Subq.w    #2,d7            ; Fade Speed
  232.     Bge.s    .1
  233.  
  234.     ;-- END --
  235. .3    Movem.l    (sp)+,d0-7/a0-6
  236.     Rts
  237.  
  238.  
  239. ; +-------+
  240. ; | Datas |    
  241. ; +-------+-------------------------------------------+
  242.  
  243. INT_pal        Dc.l    INT_exppal    ; Ptr 2 palette 2 ues
  244. INT_plstrt    Dc.l    0        ; -> Where to start drawing on ChipRam
  245. INT_dds        Dc.l    0        ; -> Crunched Data Offset
  246.  
  247. INT_packptr    Dc.l    0, 6440, 12296, 16612, 22412, 27992, 31692
  248.  
  249. INT_scrbase    Dc.l    0        ; Base address of screen display
  250. INT_scrbase2    Dc.l    0        ;  (hack for 2nd frame)
  251.  
  252. INT_black    Dcb.l    16,$000000
  253.         Dcb.l    16,$0a0a18
  254. INT_tmppal    Dcb.l    64,$000000
  255.  
  256. INT_exppal    dcb.l    16,$000000
  257.         dc.l    $0a0a18,$ffcc44,$eeaa33,$dd8822,$bb6622,$aa5511,$994400,$883300
  258.         dc.l    $256ca3,$242424,$4a4a4a,$6e6e6e,$919191,$b5b5b5,$dbdbdb,$ffffff
  259.  
  260. INT_credpal    dcb.l    16,$000000
  261.         dc.l    $0a0a18,$222222,$444444,$666666,$888888,$c2c2c2,$eeeeee,$ff5555
  262.         dc.l    $4d4de6,$4545cd,$3c3cb4,$34349c,$2c2c83,$24246a,$1b1b51,$131338
  263.  
  264. INT_tlapal    dc.l    $000000,$08081a,$231c04,$272007,$2a2309,$2e260b,$32290d,$352d0f
  265.         dc.l    $393011,$3d3314,$403616,$443a18,$473d1a,$4b401c,$4f431e,$524721
  266.         dc.l    $564a23,$5a4d25,$5d5027,$615429,$64572b,$685a2e,$6c5d30,$6f6132
  267.         dc.l    $736434,$776736,$7a6a38,$7e6e3b,$81713d,$85743f,$897741,$8c7a43
  268.         dc.l    $907e46,$938148,$97844a,$9b874c,$9e8b4e,$a28e50,$a69153,$a99455
  269.         dc.l    $ad9857,$b09b59,$b49e5b,$b8a15d,$bba560,$bfa862,$c3ab64,$c6ae66
  270.         dc.l    $cab268,$cdb56a,$d1b86d,$d5bb6f,$d8bf71,$dcc273,$e0c575,$e3c877
  271.         dc.l    $e7cc7a,$eacf7c,$eed27e,$f1db98,$f5e4b2,$f8edcb,$fcf6e5,$ffffff
  272.  
  273.  
  274.  
  275.     CNOP 0,8
  276.  
  277. INT_DataPack    incbin    'tla/intro/IntroData.STC'
  278. INT_tlatrace    incbin    'tla/intro/TLA_trace.STC'
  279.  
  280.  
  281. ;+-------------+
  282. ;| CopperLists |
  283. ;+-------------+------------------------------+
  284.  
  285.     section    'Laced Copper',DATA_C
  286.  
  287.     ; Long Frame
  288.  
  289. INT_CL1    Dc.w    BPL0PTH,0,BPL0PTL,0,BPL1PTH,0,BPL1PTL,0
  290.     Dc.w    BPL2PTH,0,BPL2PTL,0,BPL3PTH,0,BPL3PTL,0
  291.     Dc.w    BPLCON1,0,BPLCON2,0,BPLCON4,$1000
  292.     Dc.w    DDFSTRT,$3C,DDFSTOP,$D4,DIWSTRT,$2C81,DIWSTOP,$2CC1
  293.     Dc.w    BPL1MOD,80*7,BPL2MOD,80*7
  294. INT_Cp1    ColBank    1
  295. INT_d1a    Dc.w    $6007,$FFFE,BPLCON0,$C204        ; Display On
  296. INT_d1b    Dc.w    $F807,$FFFE,BPLCON0,$8204        ; Display Off
  297.     ;-- COPPERLIST JUMP POINTER --
  298. INT_C1    Dc.w    COP1LCH,0,COP1LCL,0            ; Load Short Frame
  299.     Dc.w    $FFFF,$FFFE                ; END
  300.  
  301.     ; Short Frame
  302.  
  303. INT_CL2    Dc.w    BPL0PTH,0,BPL0PTL,0,BPL1PTH,0,BPL1PTL,0
  304.     Dc.w    BPL2PTH,0,BPL2PTL,0,BPL3PTH,0,BPL3PTL,0
  305. INT_Cp2    ColBank    1
  306. INT_d2a    Dc.w    $6007,$FFFE,BPLCON0,$C204        ; Display On
  307. INT_d2b    Dc.w    $F807,$FFFE,BPLCON0,$8204        ; Display Off
  308.     ;-- COPPERLIST JUMP POINTER --
  309. INT_C2    Dc.w    COP1LCH,0,COP1LCL,0            ; Load Long Frame
  310.     Dc.w    $FFFF,$FFFE                ; END
  311.  
  312.  
  313.     ;-- SECOND COPPERLIST (TLA PICTURE ) --
  314.  
  315. INT_TLA_CL    Dc.w    BPL0PTH,0,BPL0PTL,0,BPL1PTH,0,BPL1PTL,0
  316.         Dc.w    BPL2PTH,0,BPL2PTL,0,BPL3PTH,0,BPL3PTL,0
  317.         Dc.w    BPL4PTH,0,BPL4PTL,0,BPL5PTH,0,BPL5PTL,0
  318.         Dc.w    DDFSTRT,$38,DDFSTOP,$D0,DIWSTRT,$2C81,DIWSTOP,$2CC1
  319.         Dc.w    BPL1MOD,0,BPL2MOD,0
  320.         Dc.w    BPLCON0,$6200,BPLCON1,0,BPLCON2,$0200    ; KillEHB
  321.         Dc.w    BPLCON4,0
  322. INT_TLA_Cp    ColBank    2                ; 64 colours
  323.         Dc.w    $FFFF,$FFFE    
  324.